#define _CRT_SECURE_NO_WARNINGS 1
// time
// 调试和函数递归
// 语法问题是在编译过程中发现的也称为编译错误
// 编译和链接
// 链接错误不同阶段发现
// 不一定是头文件包含错误
int main()
{
	int a = 10;
	int b = 20;
	int c = 90;
	
	printf("%d", a);

	return 0;
}
// 链接性错误
// 定位和解决
int Add(int x,int y){
	return (x + y);
}
int main()
{
	int i = 0;
	int y = 0;
	Add();
	return 0;
}

// 运行时错误
// 在运行中遇到的错误
#include <stdio.h>
int main()
{
	printf("haha\n");
	main();//自己调用自己死循环下去

	return 0;
}

int Fact(int n)
{
	if (n == 0)
		return 1;
	else
		return n * Fact(n - 1);
}

int main()
{
	//考虑解决一些不溢出的问题阶乘
	//公式：n！=n*(n-1)!
					//对n-1在进行分解
	int n = 0;
	scanf("%d", &n);
	int r = Fact(n);
	printf("%d\n", r);
	return 0;
}
void  Print(int n) {
	if (n > 9)//n>9说明是大于两位数的数字
		Print(n/10); //此处打印123  
	printf("%d ", n % 10); 
}
//说明：1234被分解进入point函数，分解到最大位123 12 1，开始反向回归，实现1 123 1234，
// 进行合理的取模得到个位数完成递归。
int main()
{
	int n = 0;
	scanf("%d", &n);
	//依照递归方式解决
	Print(n);
	return 0;
}

Fib();
//求斐波那契数
int count = 0;
int main()
{
	//前两数相加等于第三个数
	int n = 0;
	scanf("%d", &n);
	int r = Fib(n);
	printf("是%d\n", r);
	printf("\count=%d\n", count);
	return 0;
}
int Fib(int n)
{
	if (n == 3)
		count++;//count=39088169重复计算，效率较低
	if (n <= 2)
		return 1;
	else
		return Fib(n - 1) + Fib(n - 2);
}

Fib();
//求斐波那契数
int main()
{
	//前两数相加等于第三个数
	int n = 0;
	scanf("%d", &n);
	int r = Fib(n);
	printf("是%d\n", r);
	return 0;
}
int Fib(int n)
{
	int a = 1;
	int b = 1;
	int c = 0;
	/*if (n == 3)
		count++;*///count=39088169重复计算，效率较低
	if (n <= 2)
		return 1;
	while (n > 2)
	{
		c = a + b;
		a = b;
		b = c;
		n--;
	}
		return c;
}

// 节省栈内开销，此处是迭代算法


// 超级大数字需要模拟计算


// long的上限
// 不要迷恋递归，适可而止就好
//青蛙跳台阶的问题
jump(int n) {

}
int main() {
	
	return 0;
}

汉诺塔问题

hannio();
int main() {

	//递归问题
	return 0;
}

函数递归结束===================================================================